home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1997-10-26 | 5.2 KB | 121 lines |
- (*----------------------------------------------------------------------*
- * *
- * MAGICTOOLS Modula's All purpose GEM Interface Cadre Toolbox *
- * ÿ ÿ ÿ ÿ ÿ *
- *----------------------------------------------------------------------*
- * Version 3.30 02.02.1992 (C)90/91/92 by Peter Hellinger Software *
- *----------------------------------------------------------------------*
- * Dieses Modul ist urheberrechtlich geschtzt. *
- * *
- * Die Verffentlichung des Quelltextes oder Teilen daraus, sowie die *
- * Verbreitung des bersetzten, nicht gelinkten Codes in schriftlicher, *
- * oder maschinenlesbarer Form, insbesondere in Zeitschriften, Mail- *
- * boxen oder anderen Medien bedarf der ausdrcklichen schriftlichen *
- * Einverstndnisserklrung des Autors. *
- * *
- * Die Verbreitung des Moduls als Teil eines gelinkten Programms ist *
- * fr Lizenznehmer ausdrcklich erlaubt! Der Autor behlt sich das *
- * Recht vor, diese Erlaubnis jederzeit und ohne Angaben von Grnden zu *
- * widerrufen. *
- *----------------------------------------------------------------------*)
-
- (*----------------------------------------------------------------------*
- * mtLists Listenverwaltung *
- * *
- * Implementiert eine geordnete Liste. Durch die typlose Datenform der *
- * zu speichernden Information kann das Modul sehr flexibel eingesetzt *
- * werden. Maximale Speichergre der Information ist 32kb. *
- *----------------------------------------------------------------------*)
-
- DEFINITION MODULE mtLists;
-
- FROM MagicSys IMPORT Nil, Null, Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6,
- Bit7, Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14,
- Bit15, LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL,
- sBITSET, lINTEGER, lCARDINAL, lWORD, lBITSET;
-
-
-
-
-
- IMPORT SYSTEM;
-
- TYPE ENTRY; (* Eintrag in die Liste *)
-
- TYPE LIST; (* Listentyp *)
-
- TYPE CompResult = (smaller, equal, bigger);
- CompProc = PROCEDURE ( (* left *) SYSTEM.ADDRESS,
- (* right *) SYSTEM.ADDRESS): CompResult;
- (* Eine Prozedur dieses Typs definiert die Ordnung, in der die Liste
- * angelegt wird.
- * Die Prozedur soll "smaller" returnieren, wenn der Eintrag left kleiner
- * bzw. logisch VOR right einzuordnen ist; equal, wenn die Eintrge gleich
- * sind; und bigger wenn der Eintrag left grer bzw. logisch NACH right
- * einzuordnen ist. Die Prozedur bekommt immer POINTER bergeben, daher die
- * ADDRESS-Parameter.
- *
- * Beispiel fr eine CompProc:
- *
- * PROCEDURE Compare (left, rigth: ADDRESS): CompResult;
- * VAR l, r: POINTER TO ARRAY [0..10] OF CHAR;
- * BEGIN
- * l:= left; r:= right;
- * IF l^[0] < r^[0] THEN RETURN smaller; END;
- * IF l^[0] = r^[0] THEN RETURN equal; END;
- * RETURN bigger;
- * END Compare;
- *
- *)
-
- PROCEDURE NewList (VAR list: LIST; comp: CompProc): BOOLEAN;
- (* Generiert eine neue Liste *)
-
- PROCEDURE DisposeList (VAR list: LIST);
- (* Lscht eine Liste, wenn die Liste nicht leer ist, wird sie vorher
- * gelscht.
- *)
-
- PROCEDURE ListEntries (list: LIST): lCARDINAL;
- (* Liefert Anzahl der Eintrge in der Liste *)
-
- PROCEDURE NilEntry (): ENTRY;
- (* Liefert einen leeren Pointer, zum Vergleichen usw. *)
-
- PROCEDURE InsertEntry (list: LIST; info: ARRAY OF LOC): BOOLEAN;
- (* Legt ein Element in der Liste ab, FALSE wenn dabei ein Fehler auftritt *)
-
- PROCEDURE SearchEntry (list: LIST; from: ENTRY;
- info: ARRAY OF LOC; key: CompProc): ENTRY;
- (* Sucht in der Liste nach dem Element info, liefert einen Zeiger darauf.
- * from ist das Element, ab dem gesucht wird! Mit key wird eine Prozedur
- * bergeben, die die Elemente vergleicht. Liefert key ein equal, wird die
- * Prozedur abgebrochen, und der Eintrag returniert. Tip: Die in info ber-
- * gebenen Daten mssen ja nicht komplett sein. Es kommt auf die Prozedur
- * key an...
- *)
-
- PROCEDURE DeleteEntry (list: LIST; VAR entry: ENTRY);
- (* Lscht einen Eintrag aus der Liste *)
-
- PROCEDURE FirstEntry (list: LIST): ENTRY;
- (* Liefert den ersten Eintrag der Liste *)
-
- PROCEDURE LastEntry (list: LIST): ENTRY;
- (* Liefert den letzten Eintrag der Liste *)
-
- PROCEDURE NextEntry (entry: ENTRY): ENTRY;
- (* Liefert den nachfolgenden Eintrag der Liste *)
-
- PROCEDURE PrevEntry (entry: ENTRY): ENTRY;
- (* Liefert den vorhergehenden Eintrag der Liste *)
-
- PROCEDURE GetEntry (entry: ENTRY; VAR info: ARRAY OF LOC): BOOLEAN;
- (* bertrgt ein Element aus der Liste. Es wird nur kopiert, wenn die
- * Datenstruktur gleich oder grer als die gespeicherte Struktur ist.
- * FALSE wenn dabei ein Fehler auftritt (info zu klein, entry NIL).
- *)
-
- END mtLists.
-
-